package socketmvc.server.tcp;

import org.tio.core.TioConfig;
import org.tio.core.task.HandlerRunnable;
import org.tio.core.task.SendRunnable;
import org.tio.server.ServerChannelContext;

import java.nio.channels.AsynchronousSocketChannel;

public class TcpServerChannelContext extends ServerChannelContext {
    /**
     * @param tioConfig
     * @param asynchronousSocketChannel
     * @author tanyaowu
     * 2016年12月6日 下午12:17:59
     */
    public TcpServerChannelContext(TioConfig tioConfig, AsynchronousSocketChannel asynchronousSocketChannel) {
        super(tioConfig, asynchronousSocketChannel);
    }

    /**
     * 创建一个虚拟ChannelContext，主要用来模拟一些操作，真实场景中用得少
     *
     * @param tioConfig
     */
    public TcpServerChannelContext(TioConfig tioConfig) {
        super(tioConfig);
    }

    /**
     * 创建一个虚拟ChannelContext，主要用来模拟一些操作，譬如压力测试，真实场景中用得少
     *
     * @param tioConfig
     * @param id        ChannelContext id
     * @author tanyaowu
     */
    public TcpServerChannelContext(TioConfig tioConfig, String id) {
        super(tioConfig, id);
    }

    @Override
    public void setTioConfig(TioConfig tioConfig) {
        this.tioConfig = tioConfig;

        if (tioConfig != null) {
            decodeRunnable = new TcpDecodeRunnable(this, tioConfig.tioExecutor);
            handlerRunnable = new HandlerRunnable(this, tioConfig.tioExecutor);
            sendRunnable = new SendRunnable(this, tioConfig.tioExecutor);
            tioConfig.connections.add(this);
        }
    }


}
